package level02.one;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Scanner;

public class TestA {
    public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入A类的全名(level02.A)");
        //去掉两边的空格，不然输入有时会导致找不到路径
        String nextLine = scanner.nextLine().trim();

        //获取A类对象
        Class<A> aClass = A.class;
        //Class<?> aClass = Class.forName(nextLine);

        //获取空参构造器
        Constructor<A> constructor = aClass.getDeclaredConstructor();

        //创建实例对象(把这个类实例化)
        A instance = constructor.newInstance();

        /*获取A类中的showString方法(不是被public修饰的使用getMethod会抛异常--NoSuchMethodException)
        使用getDeclaredMethod来获取不用看修饰符
        */
        Method method = aClass.getDeclaredMethod("showString");
        //强制访问
        method.setAccessible(true);

        method.invoke(instance);
    }
}
